import math
import xlwt
# 我们只算一下当前局面的组合数概率
# MC是玩家持有诡计卡数目，AC和BC是其他两名玩家持有诡计卡数目
# MK是玩家持有带刀诡计卡数目，AK和BK是其他两名玩家持有带刀诡计卡数目
def calc(MC,MK,AC,AK,BC,BK):
    # 诡计卡总数和带刀诡计卡原始数量，以及非带刀诡计卡数量
    total = 40
    knife = 9
    other = total - knife # 其他牌是31张
    if(MK > MC or AK > AC or BK > BC): return
    probability_max = math.comb(knife,AK+BK)*math.comb(other, AC-AK+BC-BK)*math.comb(knife-AK-BK,MK)* math.comb(other-(AC-AK+BC-BK), MC-MK) / ((math.comb(total, AC+BC)*math.comb(total-AC-BC, MC)))
    EC = AC+BC
    EK = AK+BK
    print(f"玩家在{MC}张诡计卡中有{MK}张带刀卡，且其他玩家在持有{EC}张诡计卡中有{EK}带刀卡概率为: ", probability_max)
    return probability_max

calc(3,1,3,0,3,0)

wb = xlwt.Workbook()
# 添加一个表
i = 0
j = 0
ws = wb.add_sheet('test')
for mc in range(0, 4, 1):
    for mk in range(0, mc+1, 1):
        i += 1
        j = 0
        for ac in range(0, 7, 1):
            for ak in range(0, ac+1, 1):
                j+=1
                p = calc(mc,mk,ac,ak,0,0)
                ws.write(i, j, f'{p}')

wb.save('D:/我的短视频素材/沙丘/test.xls')
